package client;

import handling.Buffstat;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

public enum MapleBuffStat implements Serializable, Buffstat {

    NO_SLIP(999),
    FAMILIAR_SHADOW(999),
    子弹数量(999),
    取消天使(999, true),
    ICE_SKILL(999),
    FROZEN(999),
    INVINCIBILITY(999),
    精灵弱化(999),
    潜力解放(999),
    拳手索命(999),
    时空门(-2),

    /*
     * ----------------------------
     */
    增加物理攻击力(0, true),
    增加魔法攻击力(1, true),
    提升物理防御力(2, true),
    增加最大HP(3, true),
    增加最大HP百分比(4, true),
    增加最大MP(5, true),
    增加最大MP百分比(6, true),
    增加命中值(7, true),
    增加回避值(8, true),
    增加跳跃力(9, true),
    增加移动速度(10, true),
    增加所有属性(12, true),
    IndieDodgeCriticalTime(13, true),
    IndieEXP(14, true),
    IndieBooster(15, true),
    IndieFixedDamageR(16, true),
    PyramidStunBuff(17, true),
    PyramidFrozenBuff(18, true),
    PyramidFireBuff(19, true),
    PyramidBonusDamageBuff(20, true),
    IndieRelaxEXP(21, true),
    IndieSTR(22, true),
    IndieDEX(23, true),
    IndieINT(24, true),
    IndieLUK(25, true),
    IndieDamR(26, true),
    IndieScriptBuff(27, true),
    IndieMDF(28, true),
    IndieAsrR(29, true),
    IndieTerR(30, true),
    IndieCr(31, true),
    IndiePDDR(32, true),
    IndieCrMax(33, true),
    IndieBDR(34, true),
    IndieStance(36, true),
    IndieIgnoreMobpdpR(37, true),
    IndiePADR(39, true),
    IndieMADR(40, true),
    IndieCrMaxR(41, true),
    IndieEVAR(42, true),
    IndiePMdR(43, true),
    IndieForceJump(45, true),
    IndieForceSpeed(46, true),
    IndieSummoned(47, true),
    IndieCooldownR(48, true),
    IndieInvincible(49, true),
    UNK50(50, true),
    UNK51(51, true),
    UNK52(52, true),
    受击伤增加(53, true),
    减少总回避率(54, true),
    UNK55(55, true),
    UNK56(56, true),
    经验获得(49, true),
    暴击最小伤害(50, true),
    爆率增加(51, true),
    物理攻击力(62),
    物理防御力(63),
    魔法攻击力(64),
    命中率(65),
    回避率(66),
    手技(67),
    移动速度(68),
    跳跃力(69),
    魔法盾(70),
    隐身术(71),
    攻击加速(72),
    伤害反击(73),
    MaxHP(74),
    MaxMP(75),
    神之保护(76),
    无形箭弩(77),
    昏迷(78),
    中毒(79),
    封印(80),
    黑暗(81),
    斗气集中(82),
    祝福之锤(84),
    强化祝福之锤(85),
    龙之力(86),
    属性攻击(86),
    神圣祈祷(87),
    聚财术(88),
    影分身(89),
    敛财术(90),
    金钱护盾(91),
    HP_LOSS_GUARD(92),
    蓝血(93),
    虚弱(93),
    诅咒(94),
    缓慢(95),
    变身效果(96),
    恢复效果(97),
    冒险岛勇士(98),
    稳如泰山(99),
    幽玄气息(99),
    火眼晶晶(100),
    魔法反击(101),
    诱惑(102),
    暗器伤人(103),
    终极无限(104),
    进阶祝福(105),
    额外回避(106),
    命中增加(107),
    集中精力(108),
    不死化(109),
    英雄回声(110),
    MESO_RATE(111),
    GHOST_MORPH(114),
    ARIANT_COSS_IMU(115),
    混乱(116),
    ItemUpByItem(117),
    RespectPImmune(118),
    RespectMImmune(119),
    DefenseAtt(120),
    ILLUSION(121),
    狂暴战魂(122),
    金刚霸体(123),
    闪光击(124),
    终极弓剑(125),
    隐形剑(126),
    自然力重置(127),
    风影漫步(128),
    矛连击强化(130),
    连环吸血(131),
    战神之盾(132),
    战神抗压(133),
    天使状态(134),
    EXPRATE(135),
    无法使用药水(136),
    SHADOW(137),
    致盲(138),
    隐藏碎片(139),
    魔法屏障(140),
    抗魔领域(141),
    灵魂之石(142),
    飞翔(143),
    FREEZE(144),
    雷鸣冲击(145),
    葵花宝典(146),
    死亡猫头鹰(147),
    撤步退身(147),
    无敌状态(148),
    终极斩(149),
    DAMAGE_BUFF(150),
    ATTACK_BUFF(151),
    地雷(152),
    增强_MAXHP(153),
    增强_MAXMP(154),
    增强_物理攻击(155),
    增强_魔法攻击(156),
    增强_物理防御(157),
    完美机甲(158),
    UNK148(159),
    宝珠_伤害增加(160),
    呼啸_爆击概率(161),
    呼啸_MaxMp增加(162),
    呼啸_伤害减少(163),
    呼啸_回避概率(164),
    嗨兄弟(165),
    潜入状态(166),
    金属机甲(167),
    BeastFormMaxHP(168),
    幸运骰子(169),
    祝福护甲(170),
    攻击力增加百分比(171),
    快速移动精通(172),
    战斗命令(173),
    灵魂助力(174),
    DISABLE_POTENTIAL(175),
    巨人药水(176),
    OnixDivineProtection(177),
    龙卷风(178),
    牧师祝福(179),
    DisOrder(180),
    Thread(181),
    Team(182),
    Explosion(183),
    BuffLimit(184),
    增加力量(186),
    增加智力(187),
    增加敏捷(188),
    增加运气(189),
    DispelItemOptionByField(190),
    DarkTornado(191),
    PVPDamage(186),
    PvPScoreBonus(193),
    PvPInvincible(194),
    PvPRaceEffect(195),
    WeaknessMdamage(196),
    Frozen2(197),
    PVPDamageSkill(198),
    AmplifyDamage(199),
    Shock(200),
    无限精气(201),
    IncMaxHP(202),
    IncMaxMP(203),
    神圣魔法盾(204),
    KeyDownTimeIgnore(205),
    神秘瞄准术(206),
    异常抗性(208),
    属性抗性(209),
    伤害吸收(210),
    黑暗变形(211),
    随机橡木桶(212),
    精神连接(213),
    AsrRByItem(214),
    神圣拯救者的祝福(215),
    爆击提升(216),
    DROP_RATE(217),
    PlusExpRate(218),
    ItemInvincible(219),
    Awake(220),
    ItemCritical(221),
    ItemEvade(222),
    Event2(223),
    吸血鬼之触(224),
    防御力百分比(225),
    IncTerR(226),
    IncAsrR(227),
    DeathMark(228),
    UsefulAdvancedBless(229),
    死亡束缚(230),
    VenomSnake(231),
    CarnivalAttack(232),
    CarnivalDefence(233),
    CarnivalExp(234),
    SlowAttack(235),
    PyramidEffect(236),
    击杀点数(237, true),
    HollowPointBullet(238),
    KeyDownMoving(239),
    百分比无视防御(240),
    神秘的运气(241),
    幻影屏障(242),
    爆击概率增加(243),
    最小爆击伤害(244),
    卡牌审判(245),
    DojangLuckyBonus(246),
    PainMark(247),
    Magnet(248),
    MagnetArea(249),
    向导之箭(250),
    UNK250(251),
    祝福标记(252),
    精灵元素(253),
    持续战役(254),
    VampDeath(255),
    BlessingArmorIncPAD(256),
    KeyDownAreaMoving(257),
    光暗转换(258),
    光暗转换_2,
    黑暗高潮(259),
    黑暗祝福(260),
    神圣保护(261),
    生命潮汐(262),
    HitCriDamR(263),
    变形值(264),
    强健护甲(265),
    模式转换(266),
    SpecialAction(267),
    VampDeathSummon(268),
    剑刃之壁(269),
    灵魂凝视(270),
    PowerTransferGauge(271),
    伤害置换(272),
    重生符文(423),
    天使亲和(273),
    三位一体(274),
    BossShield(275),
    IDA_UNK_BUFF_3(276),
    MobZoneState(277),
    GiveMeHeal(278),
    TouchMe(279),
    Contagion(280),
    连击无限制(281),
    灵魂鼓舞(282),
    至圣领域(283),
    IgnoreAllCounter(284),
    IgnorePImmune(285),
    IgnoreAllImmune(286),
    UNK280(287),
    最终审判(288),
    寒冰灵气(289),
    火焰灵气(290),
    天使复仇(291),
    天堂之门(292),
    战斗准备(293),
    流血剧毒(297),
    不倦神酒(298),
    阿修罗(299),
    超能光束炮(300),
    能量激发(301),
    混元归一(302),
    Stimulate(303),
    返回原位置(304),
    DropRIncrease(305),
    IgnoreMobpdpR(306),
    BOSS伤害(307),
    精灵的帽子(308),
    超越攻击(309),
    恶魔恢复(310),
    终极攻击(311),
    ExceedOverload(312),
    恶魔超越(313),
    霰弹炮(314),
    FireBomb(315),
    HalfstatByDebuff(316),
    尖兵能量(317),
    SetBaseDamage(318),
    全息力场(319),
    飞行骑乘(320),
    永动引擎(321),
    时间胶囊(322),
    元素属性(323),
    开天辟地(324),
    EventPointAbsorb(325),
    ECONDARY_STAT_EventAssemble(326),
    暴风灭世(327),
    命中提升百分比(328),
    回避提升百分比(329),
    元素灵魂(330),
    信天翁(330),
    神之子透明(331),
    月光转换(332),
    灵魂融入(333),
    元素灵魂_僵直(334),
    日月轮转(335),
    TrueSight(336),
    SoulExplosion(337),
    SoulMP(338),
    FullSoulMP(339),
    SoulSkillDamageUp(340),
    元素冲击(341),
    元气恢复(342),
    交叉锁链(343),
    连环环破(344),
    重生契约(345),
    抗震防御(346),
    寒冰步(347),
    元素爆破(348),
    祈祷众生(349),
    ComboCostInc(350),
    极限射箭(351),
    NaviFlying(352),
    三彩箭矢(353),
    进阶箭筒(354),
    灵气大融合(355),
    ImmuneBarrier(356),
    防甲穿透(357),
    圣洁之力(358),
    神圣迅捷(359),
    暴击蓄能(360),
    神速衔接(362),
    精神集中(363),
    提速时刻_侦查(364),
    提速时刻_战斗(365),
    AimBox2D(366),
    IncMonsterBattleCaptureRate(367),
    CursorSniping(368),
    UNK356(370),
    DebuffTolerance(371),
    DotHealHPPerSecond(372),
    招魂结界(373),
    九死一生(374),
    SetBaseDamageByBuff(375),
    LimitMP(376),
    ReflectDamR(377),
    ComboTempest(378),
    MHPCutR(379),
    MMPCutR(380),
    SelfWeakness(381),
    元素黑暗(382),
    火凤凰(383),
    引燃(384),
    黑暗领地(385),
    火焰庇佑(386),
    黑暗重生(387),
    BossWaitingLinesBuff(388),
    火焰屏障(389),
    影子侍从(390),
    黑暗幻影(391),
    KnockBack(392),
    火焰咆哮(393),
    ComplusionSlant(394),
    召唤美洲豹(395),
    JaguarCount(396),
    SSFShootingAttack(397),
    鬼泣(398),
    ShieldAttack(399),
    战法灵气(400),
    黑暗闪电(401),
    战斗大师(402),
    死亡契约(403),
    轰炸时间(404),
    NoDebuff(405),
    BattlePvP_Mike_Shield(406),
    BattlePvP_Mike_Bugle(407),
    宙斯盾系统(408),
    灵魂吸取专家(409),
    灵狐(410),
    影子蝙蝠(411),
    刺客标记(412),
    燎原之火(413),
    花炎结界(414),
    ChangeFoxMan(415),
    神圣归一(416),
    恶魔狂怒(417),
    SpinesOfShadow(418),
    UNK404(419),
    往生极乐(420),
    结合灵气(421),
    BattlePvP_Helena_WindSpirit(422),
    BattlePvP_LangE_Protection(423),
    BattlePvP_LeeMalNyun_ScaleUp(424),
    BattlePvP_Revive(425),
    PinkbeanAttackBuff(426),
    影朋小白(427),
    PinkbeanRollingGrade(428),
    PinkbeanYoYoStack(429),
    RandAreaAttack(430),
    NextAttackEnhance(431),
    AranBeyonderDamAbsorb(432),
    AranCombotempastOption(433),
    NautilusFinalAttack(434),
    ViperTimeLeap(435),
    皇家守护(436),
    皇家守护防御(437),
    灵魂链接(438),
    光之守护(439),
    狂风肆虐(440),
    心魂值(442),
    心魂附体(443),
    心魂之盾(444),
    临界(445),
    心魂本能(446),
    不消耗HP(447),
    贯穿箭(450),
    限制HP恢复(451),
    UNK_MBS_437(452),
    火焰咆哮_A(453),
    UNK438(454),
    UNK439(455),
    UNK440(456),
    激素狂飙(457),
    重击研究(458),
    生命吸收(459),
    瞄准猎物(460),
    爆破弹夹(462),
    组合训练(463),
    UNK_MBS_450(464),
    UNK451(465),
    忍耐之盾(466),
    极限火炮(468),
    气缸过热(469),
    UNK_MBS_456(470),
    急速闪避(471),
    戴米安刻印(472),
    装备摩诃(473),
    UNK473(474),
    UNK474(475),
    UNK475(476),
    UNK476(477),
    精准火箭(478),
    超人变形(479),
    爱星能量(480),
    心雷合一(481),
    子弹盛宴(482),
    UNK466(483),
    变换攻击(484),
    祈祷(485),
    锁链术_狂怒(486),
    UNK486(487),
    UNK487(488),
    灵气武器(489),
    超压魔力(490),
    神奇圆环(491),
    心魂龙卷风(492),
    多向飞镖(493),
    呼啸暴风(494),
    宇宙无敌火炮弹(495),
    暗影抨击(496),
    多重属性_伤害吸收(497),
    UNK497(498),
    UNK498(499),
    攻势之盾(500),
    爆裂箭(501),
    弗里德的加护(502),
    过载模式(503),
    聚光灯(504),
    UNK499(505),
    武器多样化(506),
    原初庇护(507),
    荣耀之翼(508),
    UNK500(509),
    超速传动(510),
    次元神隐(511),
    视死如归(512),
    暴击强化(513),
    钢铁之躯(514),
    UNK514(515),
    UNK515(516),
    和谐连接(517),
    快速充能(518),
    充能完成(520),
    UNK521(522),
    幽灵侵蚀(526),
    控制侵蚀(527),
    纯粹念力珠(528),
    火焰念力珠(529),
    疾风念力珠(530),
    深渊念力珠(531),
    追魂手(532),
    狂躁提速(533),
    念力激化(534),
    无我之境(537),
    UNK540(540),
    UNK542(542),
    UNK543(543),
    UNK544(544),
    UNK545(545),
    守护模式变更(546),
    舞力全开(547),
    UNK530(550),
    UNK532(552),
    UNK533(553),
    结界破魔(556),
    拔刀姿势(557),
    拔刀术加成(558),
    UNK539(559),
    提升攻击伤害(560),
    武神招来_攻击(561),
    武神招来_MAXHP(562),
    武神招来_MAXMP(563),
    减少攻击伤害(564),
    一闪(565),
    HAKU_BLESS(566),
    UNK547(567),
    厚积薄发(568),
    晓月流基本技能(569),
    UNK550(570),
    水枪阵营(571),
    水枪军阶(572),
    水枪连击(573),
    水枪效果(574),
    UNK555(575),
    ReduceMana(576),
    AriaShadowSword(577),
    UNK558(578),
    UNK559(579),
    UNK560(580),
    UNK561(581),
    UNK562(582),
    UNK563(583),
    UNK564(584),
    UNK565(585),
    UNK567(586),
    UNK568(587),
    UNK569(588),
    能量获得(589, true),
    疾驰速度(590, true),
    疾驰跳跃(591, true),
    骑兽技能(592, true),
    极速领域(593, true),
    导航辅助(594, true),
    Undead(595, true),
    RideVehicleExpire(596, true),
    COUNT_PLUS1(597, true),;


    private final static HashMap<MapleBuffStat, Integer> spawnStatsList = new HashMap<>();
    private static final long serialVersionUID = 0L;

    static {
        spawnStatsList.put(UNK50, 0);
        spawnStatsList.put(PyramidEffect, 0);
        spawnStatsList.put(击杀点数, 0);
        spawnStatsList.put(圣洁之力, 0);
        spawnStatsList.put(神圣迅捷, 0);
        spawnStatsList.put(战法灵气, 0);
        spawnStatsList.put(结合灵气, 0);
        spawnStatsList.put(BattlePvP_LangE_Protection, 0);
        spawnStatsList.put(PinkbeanRollingGrade, 0);
        spawnStatsList.put(激素狂飙, 0);
        spawnStatsList.put(忍耐之盾, 0);
        spawnStatsList.put(心魂龙卷风, 0);
        spawnStatsList.put(UNK521, 0);
        spawnStatsList.put(能量获得, 0);
        spawnStatsList.put(疾驰速度, 0);
        spawnStatsList.put(疾驰跳跃, 0);
        spawnStatsList.put(骑兽技能, 0);
        spawnStatsList.put(极速领域, 0);
        spawnStatsList.put(导航辅助, 0);
        spawnStatsList.put(Undead, 0);
        spawnStatsList.put(RideVehicleExpire, 0);
    }

    private int value;
    private int pos;
    private int localValue;
    private boolean stacked = false;
    private boolean special = false;
    private int isShow = 0;

    MapleBuffStat() {
    }

    MapleBuffStat(int value) {
        this.localValue = value;
        this.value = 1 << 31 - value % 32;
        this.pos = (int) Math.floor(value / 32);
    }

    MapleBuffStat(int value, int isShow) {
        this.value = 1 << 31 - value % 32;
        this.pos = (int) Math.floor(value / 32);
        this.isShow = isShow;
    }

    MapleBuffStat(int value, boolean stacked, int isShow) {
        this.value = 1 << 31 - value % 32;
        this.pos = (int) Math.floor(value / 32);
        this.stacked = stacked;
        this.isShow = isShow;
    }



    MapleBuffStat(int value, boolean stacked) {
        this.localValue = value;
        this.value = 1 << 31 - value % 32;
        this.pos = (int) Math.floor(value / 32);
        this.stacked = stacked;
    }

    MapleBuffStat(int value, boolean stacked, boolean special) {
        this.value = 1 << 31 - value % 32;
        this.pos = (int) Math.floor(value / 32);
        this.stacked = stacked;
        this.special = special;
    }

    MapleBuffStat(int value, boolean stacked, boolean special, int isShow) {
        this.value = 1 << 31 - value % 32;
        this.pos = (int) Math.floor(value / 32);
        this.stacked = stacked;
        this.special = special;
        this.isShow = isShow;
    }


    public static Map<MapleBuffStat, Integer> getSpawnList() {
        return spawnStatsList;
    }

    @Override
    public int getPosition() {
        return pos;
    }

    public int getPosition(boolean fromZero) {
        if (!fromZero) {
            return pos;
        }
        if (pos > 0) {
            return pos - 1;
        }
        return 0;
    }

    @Override
    public int getValue() {
        return value;
    }

    public boolean canStack() {
        return stacked;
    }

    public boolean isSpecial() {
        return special;
    }

    public boolean isShow() {
        return isShow > 0;
    }

    public int getLocalValue() {
        return localValue;
    }

    public void setLocalValue(int localValue) {
        this.localValue = localValue;
    }
}
